/*全局变量类
Created on 2020年05月10日
@author: zxyong 13738196011
 */

package com.zxy.common;

import java.net.Socket;
import java.util.Hashtable;
import java.util.List;

import com.zxy.business.Ope_DB_Cent;
import com.zxy.model.T_DB_CONFIG;

public class Com_Para
{
	// 获取子级设备数据信息超时间
	public static int							iTimeCount2					= 0;
	// 本设备服务端口
	public static int							AccSocketPOrt				= 8085;
	// 实例
	public static Com_Para						instance					= null;
	// 子业务系统数据库配置集
	public static Hashtable<String,T_DB_CONFIG>	htDb						= null;
	// 有效session集
	public static Hashtable<String,Object[]>	htSession					= null;
	// 路径
	public static String						zxyPath						= "/";
	// 相对路径
	public static String						ApplicationPath				= Com_Fun.GetAbsPath();
	// 平台访问函数名
	public static String						Inf_Name					= "CenterData";
	// web文件后缀
	public static String[]						web_Name					= {".html",".js",".css",".jpg",".gif",".png",".svg",".eot",".ttf",".woff2",".woff",".ico"};
	// 本设备唯一编码
	public static String						Child_Code					= "";
	// 访问父级设备IP
	public static String						ServerIP					= "";
	// 访问父级设备端口
	public static int							ServerPort					= 8090;
	// 是否子级设备 0否 1是
	public static int							If_Child_Device				= 0;
	// 是否父级设备 0否 1是
	public static int							If_Parent_Device			= 0;
	// 获取子级设备数据信息超时间
	public static int							TimeCount					= 30000;
	// 图片访问路径 // 毫秒
	public static String						HTTP_Path					= "";
	// Session超时时间,单位：分钟
	public static int							SessionTimeOut				= 60 * 24 * 7;																				// 60*24*7分钟
	// 是否需要登陆Session // 分钟
	public static int							Login_Session				= 0;
	// 是否需要登陆session的接口
	public static Hashtable<String,Integer>		htInterSession				= null;
	// 指定跨域访问IP xxx.xx.xx.xxx 默认为空 // 1需要
	public static String						HttpUrl						= "";
	// 定时器正在运行标签
	public static boolean						bTimeFlag					= false;
	// 定时器正在运行标签
	public static boolean						bTimeBusDataFlag			= false;
	// 编码格式
	public static String						U_CODE						= "UTF-8";
	// 支付相关，参数固定
	public static String						APP_ID						= "xxxx";
	public static String						APP_PRIVATE_KEY				= "xxxx";
	public static String						ALIPAY_PUBLIC_KEY			= "xxxx";
	public static String						AliPay_Check				= "";																						// 支付宝支付确认接口APP
	public static String						AliPay_Check2				= "";																						// 支付宝支付确认接口wap
	public static String						WxPay_Check					= "";																						// 微信支付确认接口
	public static String						Ali_Login					= "";																						// 支付宝授权登陆
	public static String						sub_code					= "8A0731CC39614C90A5D474BC17253713";
	public static String						sub_usercode				= "414A6DB3BBE6419DA3768E6E25127310";
	// 用户登陆或新用户注册接口
	public static String						Is_UserLogin				= "";
	// 需要session验证的接口
	public static String						InterSession				= "";
	// 本设备名称
	public static String						S_DESC						= "zxyong我的设备";
	// 是否桌面数据库 0:Mysql 1:sqlite3
	public static int							IL_DB						= 0;																						// 0:Mysql
	// 中间件数据库连接池初始数量 // 1:Sqlite3
	public static int							incrementalConnections		= 2;
	// 中间件数据库连接池最大数量
	public static int							maxConnections				= 10;
	// socket统计
	public static int							socket_count				= 0;
	// 是否启用http协议
	public static boolean						bThread						= true;
	// 存储子设备的IP 和 socket 其中key = clientSocket为本机作为客户端设备socket存储
	public static Hashtable<String,Socket>		htServSockets				= new Hashtable<String,Socket>();
	// 存储子设备的Child_Node 和IP
	public static Hashtable<String,String>		htChildNode					= new Hashtable<String,String>();
	// 存储子设备的Child_Node 和返回值信息
	public static Hashtable<String,String>		htChildInfo					= new Hashtable<String,String>();
	// 存储子设备的Child_Node 和多协议包返回值信息
	public static Hashtable<String,String>		htTempChildInfo				= new Hashtable<String,String>();
	// 连接服务端的客户端socket
	public static Socket						clientSocket				= null;
	// 向客户端发送SQL执行出错日志信息 0:不发送 1:发送
	public static int							ShowSqlError				= 0;
	public static String						strSessionAva				= "";
	public static int							EncryptUtilType				= 1;																						// server2005
	public static String						CustTimeTaskNum				= "";																						// 毫秒为单位，多个定时器用分号隔开
	// 自定义定时器参数
	public static String						CustTimeREFLECT_IN_CLASS	= "";																						// 自定义定时器拦截器，多个拦截器用分号隔开
	// 作为服务端接收数据拦截器
	public static String						ServerREFLECT_IN_CLASS		= "";
	// 作为客户端接收数据拦截器
	public static String						ClientREFLECT_IN_CLASS		= "";
	// 访问父级设备web端口号
	public static int							ServerWebPort				= -1;

	// 自定义定时器拦截器
	private Com_Para()
	{
	}

	public static Com_Para getInstance()
	{
		if(instance == null)
		{
			instance = new Com_Para().getNewCom_Para();
		}
		return instance;
	}

	private Com_Para getNewCom_Para()
	{
		Com_Para dc = new Com_Para();
		Ope_DB_Cent od = new Ope_DB_Cent();
		List<T_DB_CONFIG> lds = od.Get_T_DB_CONFIG();

		if(Com_Para.htDb == null)
		{
			Com_Para.htDb = new Hashtable<String,T_DB_CONFIG>();
			for(T_DB_CONFIG tdvv: lds)
			{
				Com_Para.htDb.put(String.valueOf(tdvv.getMAIN_ID()),tdvv);
			}
		}
		return dc;
	}
}